// // console.log('start');
// // setTimeout(() => {
// //   console.log(' children2');
// //   Promise.resolve().then(() => {
// //     console.log('children3');
// //   })
// // }, 0);
// // new Promise(function (resolve, reject) {
// //   console.log(' children4');
// //   setTimeout(function () {
// //     console.log('children5');
// //     resolve(' children6')
// //   }, 0)
// // }).then((res) => {
// //   console.log('children7');
// //   setTimeout(() => {
// //     console.log(res);
// //   }, 0)
// // })

// /**
//  * const fs = require('fs');
// setTimeout(() => { // 新的事件循环的起点
//   console.log('1');
// }, 0);
// setImmediate(() => {
//   console.log('setImmediate 1');
// });
// /// 将会在 poll 阶段执行
// fs.readFile('./src/JS手写案例/js/1.txt', { encoding: 'utf-8' }, (err, data) => {
//   if (err) throw err;
//   console.log('read file success');
// });
// /// 该部分将会在首次事件循环中执行
// Promise.resolve().then(() => {
//   console.log('poll callback');
// });
// // 首次事件循环执行
// console.log('2');
// // 2
// // poll callback
// // 1
// // setImmediate 1
// // read file success
//  */

// function Foo() {
//   getName = function () {
//     console.log(1);
//   };
//   return this;
// }

// Foo.getName = function () {
//   console.log(2);
// };

// Foo.prototype.getName = function () {
//   console.log(3);
// }

// var getName = function () {
//   console.log(4);
// };

// function getName() {
//   console.log(5);
// }

// //请写出以下输出结果:

// Foo.getName();

// getName();

// Foo().getName();

// getName();

// new Foo.getName();

// new Foo().getName();

// new new Foo().getName();



// var a;
// console.log((a != '0' ? "a" : "b"));



// async function async1() {
//     console.log('async1 start'); // 2
//     await async2();
//     console.log('asnyc1 end'); // 6
// }
// async function async2() {
//     console.log('async2'); // 3
// }
// console.log('script start'); // 1
// setTimeout(() => {
//     console.log('setTimeOut'); // 7
// }, 0);
// async1();
// new Promise(function (reslove) {
//     console.log('promise1'); // 4
//     reslove();
// }).then(function () {
//     console.log('promise2'); // 6
// })
// console.log('script end'); // 5


// async function async1() {
//     console.log('async1 start') //2
//     await async2()
//     console.log('async1 end') //7
// }
// async function async2() {
//     new Promise(function (resolve) {
//         console.log('promise1') //3
//         resolve()
//     }).then(function () {
//         console.log('promise2') //6
//     })
// }
// console.log('script start') //1
// setTimeout(function () {
//     console.log('setTimeout') //9
// }, 0)
// async1()
// new Promise(function (resolve) {
//     console.log('promise3') //4
//     resolve()
// }).then(function () {
//     console.log('promise4') //8
// })
// console.log('script end') //5
/*
script start
async1 start
promise1
promise3
script end
promise2
async1 end
promise4
setTimeout
*/
const foo = new Promise(resolve => {
    console.log(1);
    resolve();
    console.log(2);
})

foo.then(() => {
    console.log(3);
})

console.log(4);

